/*
 * Modified MIT License
 * 
 * Copyright (c) 2006-2007 Houdah Software s.à r.l.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * Except as contained in this notice, the name(s) of the above copyright holders
 * shall not be used in advertising or otherwise to promote the sale, use or other 
 * dealings in this Software without prior written authorization.
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
**/

package com.houdah.web.control.support;

import com.houdah.messages.MessageException;

import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableDictionary;

public class IdentifyException extends RuntimeException implements MessageException
{
	// Public class constants
	
	public static final String	KEY							= "key";
	
	public static final String	ENTITY_NAME					= "entityName";
	
	
	public static final String	IDENTIFY_NO_MATCH			= "IDENTIFY_NO_MATCH";
	
	
	public static final String	IDENTIFY_AMBIGUOUS_MATCH	= "IDENTIFY_AMBIGUOUS_MATCH";
	
	
	
	// Private class constants
	
	private static final long	serialVersionUID			= -8503105359458181660L;
	
	
	
	// 
	
	private String				key;
	
	
	private String				entityName;
	
	
	private NSDictionary		context;
	
	
	
	
	// Constructor
	
	/**
	 * Designated constructor.
	 * 
	 */
	public IdentifyException(String messageCode, String key, String entityName, Throwable cause)
	{
		super(messageCode, cause);
		
		this.key = key;
		this.entityName = entityName;
		
		NSMutableDictionary exceptionContext = new NSMutableDictionary();
		
		exceptionContext.takeValueForKey(this.key, KEY);
		exceptionContext.takeValueForKey(this.entityName, ENTITY_NAME);
		
		this.context = exceptionContext.immutableClone();
	}
	
	
	
	/**
	 * Simple constructor.
	 * 
	 */
	public IdentifyException(String messageCode, String key, String entityName)
	{
		this(messageCode, key, entityName, null);
	}
	
	
	public NSDictionary context()
	{
		return this.context;
	}
	
	
	public String messageCode()
	{
		return getMessage();
	}
}